/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ar.edu.unju.fi.reservahabitaciones.grupo14.struts.actions;

import ar.edu.unju.fi.reservahabitaciones.grupo14.struts.forms.HuespedAbmForm;
import ar.edu.unju.fi.reservahabitaciones.grupo14.struts.modelo.dao.HuespedDao;
import ar.edu.unju.fi.reservahabitaciones.grupo14.struts.modelo.dao.impl.HuespedDaoImpl;
import ar.edu.unju.fi.reservahabitaciones.grupo14.struts.modelo.dominio.Huesped;
import ar.edu.unju.fi.reservahabitaciones.grupo14.struts.spring.servicios.ServicioFacade;
import ar.edu.unju.fi.reservahabitaciones.grupo14.struts.spring.servicios.SpringUtil;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.hibernate.exception.ConstraintViolationException;

/**
 *
 * @author mauriljb
 */
public class HuespedAbmAction extends DispatchAction {

    /*
     * forward name="success" path=""
     */
    private static final String SUCCESS = "success";
      private final static String ERROR = "error";
      ServicioFacade servicio = (ServicioFacade) SpringUtil.getBean("servicioFacade");
    /**
     * This is the action called from the Struts framework.
     *
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    
    public ActionForward beforeInsert(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
       
          HuespedAbmForm huespedAbm = (HuespedAbmForm) form;
          this.limpiar(huespedAbm); 
          huespedAbm.setEvent("insert");
          return mapping.findForward("beforeInsert");        
    }
    
     public ActionForward insert(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
            
         HuespedAbmForm huespedAbm = (HuespedAbmForm) form;
         HuespedDao hud = servicio.getHuespedDao();
         Huesped h = servicio.getHuesped();
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            Date s = new Date();
            String fecha1 = sdf.format(s);
         h.setFechaCreacion(sdf.parse(fecha1));
         h.setFechaModificacion(sdf.parse(fecha1));
         h.setNombre(huespedAbm.getNombre());
         h.setApellido(huespedAbm.getApellido());
         h.setDni(Long.parseLong(huespedAbm.getDni()));
         h.setTelefono(huespedAbm.getTelefono());
         h.setEmail(huespedAbm.getEmail());
         h.setEstado(huespedAbm.getEstado());
         hud.insert(h);
         return mapping.findForward(SUCCESS);
         
     }
      public ActionForward beforeUpdate(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
            HuespedAbmForm huespedAbm = (HuespedAbmForm) form;
//            ServicioFacade servicio = (ServicioFacade) SpringUtil.getBean("servicioFacade");
            String id = huespedAbm.getHuespedId();
            Huesped h = servicio.getHuespedDao().getHuesped(Long.parseLong(id));
//            huespedAbm.setFechaCreacion(String.valueOf(h.getFechaCreacion()));
//            huespedAbm.setFechaModificacion(String.valueOf(h.getFechaModificacion()));
            huespedAbm.setNombre(h.getNombre());
            huespedAbm.setApellido(h.getApellido());
            huespedAbm.setDni(String.valueOf(h.getDni()));
            huespedAbm.setEmail(h.getEmail());
            huespedAbm.setTelefono(h.getTelefono()); 
            huespedAbm.setEstado(h.getEstado());
            
            huespedAbm.setEvent("update");        
          return mapping.findForward("beforeUpdate");
      }  
        public ActionForward update(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
//         ServicioFacade servicio = (ServicioFacade) SpringUtil.getBean("servicioFacade");
         HuespedAbmForm huespedAbm = (HuespedAbmForm) form;
         HuespedDao hud = servicio.getHuespedDao();
         Huesped h = servicio.getHuesped();
//         SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
//         Date s = new Date();
//         String fecha1 = sdf.format(s);
//         h.setFechaCreacion(sdf.parse(huespedAbm.getFechaCreacion()));
//         huespedAbm.setFechaModificacion(null);
//         h.setFechaModificacion(sdf.parse(fecha1));
         h.setHuespedId(Long.parseLong(huespedAbm.getHuespedId()));
         h.setNombre(huespedAbm.getNombre());
         h.setApellido(huespedAbm.getApellido());
         h.setDni(Long.parseLong(huespedAbm.getDni()));
         h.setTelefono(huespedAbm.getTelefono());
         h.setEmail(huespedAbm.getEmail());
         h.setEstado(huespedAbm.getEstado());
      
         hud.update(h);
         return mapping.findForward(SUCCESS);   
      }
        public ActionForward delete(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
            try{
//                ServicioFacade servicio = (ServicioFacade) SpringUtil.getBean("servicioFacade");
                HuespedAbmForm huesAbmForm = (HuespedAbmForm) form;
                Huesped h = servicio.getHuespedDao().getHuesped(Long.parseLong(huesAbmForm.getHuespedId()));
                new HuespedDaoImpl().delete(h);           
             return mapping.findForward(SUCCESS);
            }catch(ConstraintViolationException ex){
                return mapping.findForward(ERROR);
            }
        } 
     public void limpiar(HuespedAbmForm abm){
         abm.setNombre(null);
         abm.setApellido(null);
         abm.setDni(null);
         abm.setEmail(null);
         abm.setHuespedId(null);
         abm.setTelefono(null);
         abm.setEvent(null);
         abm.setEstado(null);
     }
}
